package it.okkam.lavis;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import it.okkam.costants.Costanti;
import it.okkam.importdatacreaterdf.DatiCatasto;
import it.okkam.importdatacreaterdf.LeggiParticelle;
import it.okkam.strutturedati.ParticellaCatastale;
import it.okkam.utility.ConfigReader;
import it.okkam.utility.FillModel;
import it.okkam.utility.Utility;

import com.hp.hpl.jena.rdf.model.Model;


public class DatiCatastoLavisEdificiali implements DatiCatasto {
	public static void main(String[] args) {	
		Utility ut = new Utility();
		ConfigReader.configReader();
		final long startTime = ut.printInitialTimeSetTime(ConfigReader.fileEdifLavis);
		
		DatiCatastoLavisEdificiali datiCatasto = new DatiCatastoLavisEdificiali();
		List<ParticellaCatastale> lista = datiCatasto.leggiParticelle(
				ConfigReader.fileCoordLavis, ConfigReader.fileAttrLavis, "Lavis");
		datiCatasto.creaFileRDF(ConfigReader.fileEdifLavis, lista, "TURTLE");
		
		ut.printExecutionTime(startTime, lista);

	}

	public List<ParticellaCatastale> leggiParticelle(String filePoligoniPath,
			String fileParticellePath, String comune) {
		
		LeggiParticelle leggiParticelle = new LeggiParticelle();
		List<ParticellaCatastale> lista = leggiParticelle.leggiParticelle(
		filePoligoniPath,fileParticellePath, comune,  Costanti.CODICE_LAVIS,Costanti.EDIFICIALE, Costanti.PRINCIPALE );
		return lista;
		
	}
	
	public File creaFileRDF(String nomeFile, List<ParticellaCatastale> listaParticelleCatastali, String serializzazione) {
		File fileLavisrdf = new File(nomeFile);
		FillModel modello = new FillModel();
		Model model = modello.fillModel(listaParticelleCatastali, Costanti.ONTOLOGIA_LAVIS_CATASTO);
				
		try{
		model.write(new PrintWriter(fileLavisrdf), serializzazione);
		}
		catch(FileNotFoundException e) {			
			e.printStackTrace();
		}
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		Date date = new Date();
		System.out.println("["+dateFormat.format(date)+"] Creazione file " + fileLavisrdf.getName() +" terminata!");
		return fileLavisrdf;
	}
}


